Note: Manual conversion from LaTeX did not preserve the citations. Imbedded pictures are represented as links to postscript files, which unfortunately are too big to store online (2.87 MB). You can download this report compressed (42 KB) including the postscript pictures  here.
 

Exploring CSCW support for Software Development through Multiple Levels of Collaboration

Gene Thomas
Department of Computer Science
University of Canterbury
Christchurch, New Zealand
[email protected]

Abstract

Increasingly software development is carried out in teams, often leading to the  concurrent modification of diverse aspects of the system under development. To work productively software engineers must be able to alternate between independent and collaborative work conditions while maintaining an awareness of others' activities. Introducing  multiple levels of collaboration within a Computer Supported Co-operative Work (CSCW) system is an effective solution but increases  user requirements in terms of workspace and temporal awareness.
 

Keywords

CSCW, groupware, version control, collaborative editing, software engineering.
 

1. Introduction

Effective collaborative software development has greater requirements than both single user software development and simple collaborative writing. Within this application domain their are two tiers of collaboration. At times the programmers  need to collaborate closely with  parties focusing on the same piece of code. At other times collaborators will wish to independently modify diverse aspects of the system, this later case has very different needs from the first. The modification and testing of separate pieces of code within one system cannot be carried out simultaneously, put simply, programmer A does not want to have to worry about programmer B's modifications to the system when trying to test and debug his/her own changes.

Tools are needed that forfill the needs of both levels of collaboration. Maintaining workspace awareness, the users' understanding of each others activities, while important in all groupware applications, [1], is critical within this application area given the added complexity of multiple levels of collaboration. One must be acutely aware of close collaborators actions while maintaining some understanding of participants working independently elsewhere in the system. Additionally, due to the large amount of data to be traversed, supporting  temporal awareness, understanding  the changes that have occurred in relation to time, is also of critical importance. Programmers must be able to shift their attention to diverse sections of the system  without losing track of modifications made by others.
 
In this paper I review the potential of existing tools to support the task outlined above. I develop some design principals for the development of a suitable tools and discuss Medusa, a prototype collaborative version control and software editing system designed to fill these needs.
 

2. Background

Separate tools exist to support  collaborative writing and parallel development of software systems. This section evaluates the potential of these systems to forfill the needs of collaborative software development. To facilitate computer supported group text editing research has been conducted in the area of collaborative writing.

Later generations of version control systems have been developed to support the concurrent modification of multiple  versions of source code. I discuss their applicability to this task domain. Finally I evaluate the potential of combing these techniques to provide a feasible solution.
 

2.1. Collaborative writing

Collaborative writing is an area of research concerned with technologies to support distributed multi-person text editing. Much research and a number of systems have been produced [2]. A number of useful groupware ``widgets''  [1] have been developed to provide workspace awareness. These include: These tools while supporting independent user focus between group participants are not suited to concurrent independent group software development as only one version of the text is maintained at a given time. However the developments in supporting workspace awareness are directly applicable to the closely-collaborative scenario multi person software development

2.2. Version Control

Version control systems allow the developer to maintain multiple versions of source code files and to track modifications. To edit files programmers ``check'' the data out of the system, perform their modifications, and return control of the file back to version control system.  New versions can be created and documented as needed.

The original version control systems (RCS, Revision Control System  [3] and SCCS, Source Code Control System, [4]) do not support  multiple users working concurrently on different versions. CVS, Concurrent Versions System [5] overcomes this restriction. The main limitation of these tools is that being command line based there is very little workspace  and  little temporal awareness. Users only know  when and by whom complete files were modified.

Furthermore since the version control system is distinct from the editing tools used so much information is lost, such as exactly what was added or deleted and when. Merges of multiple versions are possible but only by calculating the differences using algorithms similar to that used by the UNIX diff [6] command.

2.3. Collaborative writing with concurrent version control

While it may seem that a combination of the two technologies outlined above would provide a suitable system for distributed software development, their lack of integration severely limits their usefulness. While modern collaborative writing tools provide good workspace awareness within the document neither technologies could easily provide awareness of all users' actions.

Given that users will traverse both the version and chunk hierarchies there is a strong need to provide temporal awareness so that one can ``catch up'' on changes that have occurred. Information encapsulated within the editing system must be available to the entire system. To effectively maintain  workspace and temporal awareness the version control and editing systems must be integrated.
 

3. Collaborative software editor: Design Criteria

Given that an integrated version control and editing system is required any proposed system should forfill the following criteria:
 

4. Medusa

I have developed Medusa, a prototype multiple session WYSIWIS (what you see is what I see) distributed application to support collaborative software development. Medusa was written using Tcl/Tk [464] and the GroupKit toolkit [347].

The interface consists of two main windows, one showing the versions or source code  and the other showing the ``chunks'' of code within the project. Their versions windows, Figure  VersionWin ,  shows a directed graph of the versions that exists in the project. Small dots above the version provide conference wide workspace awareness by  indicating the version that each participant is currently working in. A table on the left shows the users' colours and their present version.

From this window the user can select a version to work with or view. Versions with children become read-only so can be viewed but not edited. Each version has an associated colour facilitate text colour highlighting by version.

New versions can be spawned from existing versions. When a child of multiple parents is created chunks with versions in both parents are merged, the results of the merge can be easily checked because only merged chunks will have new versions, eg After merging versions 1.1a and 1.1b to form version 2.0, the only chunks shown as version 2.0 in the chunk view will be those that resulted from a merge of multiple parent version chunks. All other chunks will be of earlier versions as they will not have changed from the parent version. The various text colour options within the editor (see below) allow the text to be coloured by contributing version, Figure EditWin shows the results of the merge of versions 1.1a and 1.1b of chunk ``widgets''.

Picture: Versions Window. The user and one other participant are working in version 3.1b while another edits version 3.1a.
 
The source code for each file is divided into a hierarchy of discrete `chunks',a concept  borrowed from literate programming [679,681]. This eases the recognition of areas of the system that have been modified as only the chunks titles must be viewed rather than the entire source code. The chunk hierarchy is displayed in the Chunks window, Figure TreeWin. The name and version  of each chunk is displayed alongside its icon. Only information relating to users working in the current version  is  shown. Open chunks are shaded and dots to the right of the chunk names show which chunk each member of the current version has in focus.

 Picture:Chunks Window. Both users working in version 3.1b have the chunk ``widgets'' in focus. The first two chunks are unchanged from their initial version 1.0

When a chunk is opened an Edit window is created, Figure EditWin. Participants operating in  the same version are working toward a common goal so operate in a strict WYSIWIS fashion, all have an identical set of chunks open at any one time. Each Edit windows is equipped with multi-user scroll bar and Telepointers. Combined with the location indicators in the Chunks window these provide the much needed workspace awareness among programmers working on the same version.

An Editing Window. Text is coloured to show the contributing versions after the merge of version 1.1a and 1.1b to form version 2.0. Text from versions 1.0, 1.1a, 1.1b and 2.0 are shown.

The text within the edit windows can be coloured to  indicate the origin of the text, either by version or user. This is possible as each version and user are assigned a colour. Temporal awareness is supported by only colouring changed since a specific time, this can be:

Optionally deleted text can be shown, it is coloured in a similar fashion but in a ``strike-out'' font.

These complex highlighting schemes are needed so that users can ``catch up'' with changes that have occurred since their attention was diverted to other chunks or versions within the system. This is especially useful after a version merge operation (see above).

4.1 Implementation details

To support the multiple tiers of collaboration framework, the concept of the session was introduced. A session is a collaborative grouping within a  conference (users working in the same version in Medusa). The  gk_toSession command   was constructed, a session-wide equivalent of the GroupKit conference-wide gk_toAll command. This provided a simple and consistent method of separating sessions within the application. Similarly the sub-conference equivalent to the conference level  gkBind updateEntrant binding, the updateNewSessionMember {user} procedure was created.

Multiple schemes for viewing text was made possible by maintaining multiple text editing objects, ten for each open chunk (normal and ``show deletions'' copies for each of the five time frames). Only one of these is mapped to the screen at any one time. Since some text objects show deletions the coordinates are not consistent across all views. All insertions and deletions have their locations mapped to a common addressing scheme which is mapped by each text object to its local coordinate system.
 

5. Further work

Medusa is  a prototype system, to accurately evaluate its usefulness as a collaborative software development the interface  would have to be brought up to the level of equivalent commercially available  single user  environments. Also the version management functionality could be extended. Improvements include: Extensive user trials are needed to evaluate the utility of the  multiple levels of collaboration paradigm.

6. Conclusions

I have demonstrated the special needs of collaborative software development. Users must be able to work both in close collaboration and independently necessitating multiple tiers of collaboration. There is a critical need to maintain workspace and temporal awareness derived from the complexity of multi levels of collaboration and the need for users to traverse large volumes of data.

Current tools while providing parts of the solution are not effective in the application domain both because of the complex nature of the task domain and the need for integration to provide workspace and temporal awareness.

My prototype system, Medusa, while still under development provides sophisticated mechanisms for provide multiple tiers of collaboration while  maintaining workspace and temporal awareness.